<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>ES6的Promise学习</title>

</head>
<body>
    <script>
       const promise = new Promise(function (resolve,reject) {
            setTimeout(function () {
                let data = '数据库中用户的数据';
                resolve(data);
                let err = '数据读取失败';
                reject(err);
            },1000)
       }).then(function (res) {
        // 成功
           console.log(res);
       },function (err) {
        // 调用失败
           console.log(err);
        // 该打印有红色叉叉
           console.error(err);
           // 打印警告
           console.warn(err);
       });

       // Promise封装ajax .then返回的结果是非promise类型的属性，那么状态是成功，返回值为对象的成功值
       const p = new Promise((resolve,reject)=>{
           const xhr = new XMLHttpRequest();
           xhr.open("get","https://api.apiopen.top/getJoke");
           xhr.send();
           xhr.onreadystatechange = function () {
               if (xhr.readyState === 4){
                   if (xhr.status>=200 && xhr.status<300)
                       resolve(xhr.response);
                   else
                       reject(xhr.status);
               }
           }
       })
       const result = p.then(function (res) {
           console.log(res);
           // 可以设置返回的东西 非promise类型的属性
           // return `成功啦`;
           // 或者返回一个promise对象
           return new Promise((resolve, reject) =>{
               resolve('成功');
               // reject('失败');
           })
           // 或者直接抛出错误
           // throw new Error('不对不对');
           // throw '出错了';

       },function (err) {
           console.error(err);
       })
       console.log(result);



    </script>
</body>
</html>